创建属性类型
属性提供了指定和检查节点的状态、外观和行为的手段。例如,属性可以定义颜色,指示按钮是否按下或指定项的对齐方式。
属性提供了一个 uniform 的方式来访问Kanzi 节点的数据,使许多Kanzi 子系统可以操纵数据。例如,这样您可以动画化属性值、提供属性值之间的绑定,以及监视属性值更改。
每个属性都通过属性类型描述。属性类型唯一地描述属性的使用位置、名称及属性保存的值的类型。数据类型定了属性的数据类型。
请注意,动画只能动画化浮点值。因此,要动画化具有多个值的属性(例如颜色和变换),您可以将属性数据分为一组浮点属性数据特性(例如,一种颜色属性类型中的 RGBA 通道)。
为自定义属性类型设置和使用命名空间
在 Kanzi 应用程序中,自定义属性类型的名称必须是唯一的。当 Kanzi 应用程序使用从不同的 Kanzi Studio 工程导出的 kzb 文件时,为了确保在该应用程序中自定义属性类型的名称是唯一的,在每个 kzb 文件中为自定义属性类型使用不同的命名空间。
在Kanzi Engine 插件中创建属性类型时,在同一 Kanzi 应用程序中使用的所有插件和 Kanzi Studio 工程均使用唯一名称。
在 Kanzi 中,您可以使用以下名称访问应用程序中的属性类型:
- 命名空间 (Namespace).名称 (Name),使用 Kanzi Engine API 访问属性类型。
例如,要在 Gauges kzb 文件命名空间中访问名为 Speed 的属性类型,使用 Gauges.Speed。 - 名称 (Name),访问着色器中的属性类型。
例如,SpeedNeedle。 - 命名空间 (Namespace).名称 (Name) 或 名称 (Name),访问绑定中的属性类型。
- 显示名称 (Display Name) 是您在可以在素材库 (Library) > 属性类型 (Property Types) 中看到的用户友好名称。
例如,Speed Needle。
默认情况下,Kanzi Studio 工程使用工程名称作为默认的属性类型命名空间。如果工程名称包含空格,Kanzi Studio 会将其从命名空间名称中移除。
例如,如果工程名称为 Primary gauges,则默认的工程属性命名空间为 Primarygauges。对于该工程中名为 Speed 的属性,该属性的完整名称为 Primarygauges.Speed。
要更改工程属性命名空间,在 Kanzi Studio 的主菜单中选择 > ,并将属性命名空间 (Property Namespace) 属性设为您要使用的命名空间。

现在,Kanzi Studio 默认情况下将为您创建的所有新的自定义属性类型使用新的工程属性命名空间。
创建属性类型
要创建属性类型:
- 在素材库 (Library) 中,按下 Alt 并右键点击属性类型 (Property Types) 并选择 属性类型 (Property Type)。

属性类型编辑器 (Property Type Editor) 即会打开。 - 在属性类型编辑器 (Property Type Editor) 中设置:
- 在命名 (Naming) 类别中设置:
- 名称 (Name),以设置您在Kanzi API 中使用的属性的名称。
属性类型名称不能含有:- 属性名称开头或结尾不能使用句点 (.)
- 空格
- 制表符
- 斜线 (/)
- 反斜杠 (\)
- 井号 (#)
- 左右大括号 ({})
- @ 符号
- 显示名称 (Display Name),以设置您在 Kanzi Studio 中使用的属性的名称。输入<Name> 以使用与您在名称 (Name) 属性中设置的名称相同的名称。
- 类别 (Category),以设置 Kanzi Studio 在属性 (Properties) 和添加属性 (Add Properties) 窗口中的哪个类别显示属性类型。
使用 类别 (Category) 属性可在 Kanzi Studio 中快速找到属性类型。

- 名称 (Name),以设置您在Kanzi API 中使用的属性的名称。
- 使用数据类型 (Data Type) 属性设置其保存的数据类型。您可以使用以下所列的一种数据类型:
- 布尔类型 (Boolean) 存储值 True 或 False,并且没有特定类型的属性。
- 颜色 (Color) 存储红色、绿色、蓝色和阿尔法通道 (RGBA) 的颜色信息。
请注意,即便在 Kanzi Studio 中您可以设置色调、饱和度、亮度和阿尔法通道 (HSLA) 的颜色值,Kanzi 会将它们存储在 RGBA 中。这就意味着您只能动画化 RGBA 值。 - 枚举 (Enumeration) 存储一组键值对,使每个唯一的键值解析为一个唯一的整数。
- 浮点 (Float) 存储单精度浮点值。
- 整数 (Integer) 存储 32 位带符号的整数值。
- 3x3 矩阵 (Matrix 3x3) 存储 3x3 矩阵的浮点值,可用于存储 2D 节点的变换。
- 4x4 矩阵 (Matrix 4x4) 存储 4x4 矩阵的浮点值,可用于存储 3D 节点的变换。
- 消息 (Message) 表示消息,可用于为应用程序事件消息添加消息触发器。请参阅 使用消息。
- 工程项 (Project Item) 存储对节点和资源的引用以及资源 ID,并没有特定类型的属性。您只能在应用程序代码中使用 工程项 (Project Item) 数据类型,而对于该数据类型,Kanzi 会将属性转换成目标节点的路径或是字符串格式的资源。
- 属性类型 (Property Type) 存储对其他数据类型的引用。您只能在应用程序代码中使用 属性类型 (Property Type) 数据类型,而对于该数据类型,Kanzi 将属性转换为字符串格式的目标属性名称。
- 文本 (Text) 存储纯文本,并且没有特定类型的属性。
如要创建支持用户选择节点或资源的属性类型,或设置资源 ID,请使用 工程项 (Project Item) 属性类型。 - Vector 2D 存储两个浮点值的 vector。
- Vector 3D 存储三个浮点值的 vector。
- Vector 4D 存储四个浮点值的 vector。

- 编辑器 (Editor) 属性可用于选择您要在 Kanzi Studio 的 属性 (Properties) 窗口中设置属性类型值的编辑器。可用的编辑器取决于数据的类型。

- 继承 (Is Inherited) 属性可用于设置节点能否从其祖先节点继承属性类型的值。

- 影响布局 (Affect Layout) 属性可用于设置属性类型是否会影响节点布局。当您启用影响布局 (Affect Layout) 并且属性的值对于某个节点发生了变化时,Kanzi 会重新计算该节点的布局。请注意,重新计算布局会降低应用程序的性能。
例如,如果您使用自定义属性类型动画化内容,那么当边框尺寸发生变化时,启用影响布局 (Affect Layout) 设置。通过设置,属性可更新布局和渲染。
- 使用影响渲染 (Affect Rendering) 属性设置属性类型是否会影响节点渲染。当您启用影响渲染 (Affect Rendering) 并且属性的值对于某个节点发生了变化时,Kanzi 会更新该节点的渲染。如果您要创建的属性不会影响布局或尺寸,则必须启用影响渲染 (Affect Rendering) 才能看到您要借助属性实现的效果。例如,如果您使用属性设置文本块 (Text Block) 节点的颜色,则启用影响渲染 (Affect Rendering)。请参阅 应用程序空闲状态。

- 在 特定类型 (Type Specific) 类别中,您可以设置特定于属性的数据类型的参数。例如,您可以设置该属性类型的下限值和上限值。

- 在值 (Value) 部分中,您可以设置属性的默认值和排序索引。

- 在命名 (Naming) 类别中设置:
- 点击保存 (Save)。
Kanzi Studio 将属性类型存储在素材库 (Library) > 属性类型 (Property Types) 中以 命名空间 (Namespace) 命名的文件夹内,而该文件夹的名称是在属性类型的 名称 (Name) 字段中设置的。
现在,您可以将该属性添加到节点中,并像使用 Kanzi 中的任何其他属性一样使用该属性类型。
将所有自定义属性类型移动到工程属性命名空间
要将 Kanzi Studio 工程中的所有自定义属性类型移动到工程属性命名空间,请在 素材库 (Library) 中右键点击 属性类型 (Property Types) 并选择 添加属性命名空间至属性类型 (Add Property Namespace to Property Types)。